<!-- HTML header for doxygen 1.8.18-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.18"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Ipopt: Ipopt::LineSearch Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
  $(document).ready(function() { init_search(); });
/* @license-end */
</script>
<script type="text/x-mathjax-config">
  MathJax.Hub.Config({
    extensions: ["tex2jax.js"],
    jax: ["input/TeX","output/HTML-CSS"],
});
</script>
<script type="text/javascript" async="async" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js"></script>
<link href="stylesheet.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 40px;">
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">Ipopt Documentation
   &#160;<!--span id="projectnumber">3.14.12</span-->
   </div>
  </td>
   <td>        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <img id="MSearchSelect" src="search/mag_sel.png"
               onmouseover="return searchBox.OnSearchSelectShow()"
               onmouseout="return searchBox.OnSearchSelectHide()"
               alt=""/>
          <input type="text" id="MSearchField" value="Search" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)" 
               onblur="searchBox.OnSearchFieldFocus(false)" 
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
          </span>
        </div>
</td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.18 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(document).ready(function(){initNavTree('classIpopt_1_1LineSearch.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="classIpopt_1_1LineSearch-members.html">List of all members</a>  </div>
  <div class="headertitle">
<div class="title">Ipopt::LineSearch Class Reference<span class="mlabels"><span class="mlabel">abstract</span></span></div>  </div>
</div><!--header-->
<div class="contents">

<p>Base class for line search objects.  
 <a href="classIpopt_1_1LineSearch.html#details">More...</a></p>

<p><code>#include &lt;<a class="el" href="IpLineSearch_8hpp_source.html">IpLineSearch.hpp</a>&gt;</code></p>
<div id="dynsection-0" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
  <img id="dynsection-0-trigger" src="closed.png" alt="+"/> Inheritance diagram for Ipopt::LineSearch:</div>
<div id="dynsection-0-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-0-content" class="dyncontent" style="display:none;">
<div class="center"><img src="classIpopt_1_1LineSearch__inherit__graph.png" border="0" usemap="#Ipopt_1_1LineSearch_inherit__map" alt="Inheritance graph"/></div>
<map name="Ipopt_1_1LineSearch_inherit__map" id="Ipopt_1_1LineSearch_inherit__map">
<area shape="rect" title="Base class for line search objects." alt="" coords="47,169,182,196"/>
<area shape="rect" href="classIpopt_1_1BacktrackingLineSearch.html" title="General implementation of a backtracking line search." alt="" coords="5,244,224,271"/>
<area shape="rect" href="classIpopt_1_1AlgorithmStrategyObject.html" title="This is the base class for all algorithm strategy objects." alt="" coords="23,80,206,121"/>
<area shape="rect" href="classIpopt_1_1ReferencedObject.html" title="Storing the reference count of all the smart pointers that currently reference it." alt="" coords="25,5,204,32"/>
</map>
<center><span class="legend">[<a target="top" href="graph_legend.html">legend</a>]</span></center></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:ad0913502718f88b85dc4af3c4e58eaf1"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIpopt_1_1LineSearch.html#ad0913502718f88b85dc4af3c4e58eaf1">FindAcceptableTrialPoint</a> ()=0</td></tr>
<tr class="memdesc:ad0913502718f88b85dc4af3c4e58eaf1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Perform the line search.  <a href="classIpopt_1_1LineSearch.html#ad0913502718f88b85dc4af3c4e58eaf1">More...</a><br /></td></tr>
<tr class="separator:ad0913502718f88b85dc4af3c4e58eaf1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad33f5703834e99614d2eace2846ac5c0"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIpopt_1_1LineSearch.html#ad33f5703834e99614d2eace2846ac5c0">Reset</a> ()=0</td></tr>
<tr class="memdesc:ad33f5703834e99614d2eace2846ac5c0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Reset the line search.  <a href="classIpopt_1_1LineSearch.html#ad33f5703834e99614d2eace2846ac5c0">More...</a><br /></td></tr>
<tr class="separator:ad33f5703834e99614d2eace2846ac5c0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abe044f75d7c5d0ad79a58ddc3b4aab23"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIpopt_1_1LineSearch.html#abe044f75d7c5d0ad79a58ddc3b4aab23">SetRigorousLineSearch</a> (bool rigorous)=0</td></tr>
<tr class="memdesc:abe044f75d7c5d0ad79a58ddc3b4aab23"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set flag indicating whether a very rigorous line search should be performed.  <a href="classIpopt_1_1LineSearch.html#abe044f75d7c5d0ad79a58ddc3b4aab23">More...</a><br /></td></tr>
<tr class="separator:abe044f75d7c5d0ad79a58ddc3b4aab23"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a129fe1f77e892e9baf6a1565280afa48"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIpopt_1_1LineSearch.html#a129fe1f77e892e9baf6a1565280afa48">CheckSkippedLineSearch</a> ()=0</td></tr>
<tr class="memdesc:a129fe1f77e892e9baf6a1565280afa48"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check if the line search procedure didn't accept a new iterate during the last call of <a class="el" href="classIpopt_1_1LineSearch.html#ad0913502718f88b85dc4af3c4e58eaf1" title="Perform the line search.">FindAcceptableTrialPoint()</a>.  <a href="classIpopt_1_1LineSearch.html#a129fe1f77e892e9baf6a1565280afa48">More...</a><br /></td></tr>
<tr class="separator:a129fe1f77e892e9baf6a1565280afa48"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6b2653f6e6a17c3d909b2868c772d752"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIpopt_1_1LineSearch.html#a6b2653f6e6a17c3d909b2868c772d752">ActivateFallbackMechanism</a> ()=0</td></tr>
<tr class="memdesc:a6b2653f6e6a17c3d909b2868c772d752"><td class="mdescLeft">&#160;</td><td class="mdescRight">This method should be called if the optimization process requires the line search object to switch to some fallback mechanism (like the restoration phase), when the regular optimization procedure cannot be continued (for example, because the search direction could not be computed).  <a href="classIpopt_1_1LineSearch.html#a6b2653f6e6a17c3d909b2868c772d752">More...</a><br /></td></tr>
<tr class="separator:a6b2653f6e6a17c3d909b2868c772d752"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader">Constructors/Destructors</div></td></tr>
<tr class="memitem:af2ec1bd039c55a71595069245cd3e1b0"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIpopt_1_1LineSearch.html#af2ec1bd039c55a71595069245cd3e1b0">LineSearch</a> ()</td></tr>
<tr class="memdesc:af2ec1bd039c55a71595069245cd3e1b0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Default Constructor.  <a href="classIpopt_1_1LineSearch.html#af2ec1bd039c55a71595069245cd3e1b0">More...</a><br /></td></tr>
<tr class="separator:af2ec1bd039c55a71595069245cd3e1b0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af0662e2a2da3485f7378fe3c02457a38"><td class="memItemLeft" align="right" valign="top">virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIpopt_1_1LineSearch.html#af0662e2a2da3485f7378fe3c02457a38">~LineSearch</a> ()</td></tr>
<tr class="memdesc:af0662e2a2da3485f7378fe3c02457a38"><td class="mdescLeft">&#160;</td><td class="mdescRight">Destructor.  <a href="classIpopt_1_1LineSearch.html#af0662e2a2da3485f7378fe3c02457a38">More...</a><br /></td></tr>
<tr class="separator:af0662e2a2da3485f7378fe3c02457a38"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_methods_classIpopt_1_1AlgorithmStrategyObject"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classIpopt_1_1AlgorithmStrategyObject')"><img src="closed.png" alt="-"/>&#160;Public Member Functions inherited from <a class="el" href="classIpopt_1_1AlgorithmStrategyObject.html">Ipopt::AlgorithmStrategyObject</a></td></tr>
<tr class="memitem:aa2cb1ac4ea5b97c9283bc0fdb71da1d1 inherit pub_methods_classIpopt_1_1AlgorithmStrategyObject"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIpopt_1_1AlgorithmStrategyObject.html#aa2cb1ac4ea5b97c9283bc0fdb71da1d1">Initialize</a> (const <a class="el" href="classIpopt_1_1Journalist.html">Journalist</a> &amp;jnlst, <a class="el" href="classIpopt_1_1IpoptNLP.html">IpoptNLP</a> &amp;ip_nlp, <a class="el" href="classIpopt_1_1IpoptData.html">IpoptData</a> &amp;ip_data, <a class="el" href="classIpopt_1_1IpoptCalculatedQuantities.html">IpoptCalculatedQuantities</a> &amp;ip_cq, const <a class="el" href="classIpopt_1_1OptionsList.html">OptionsList</a> &amp;options, const std::string &amp;prefix)</td></tr>
<tr class="memdesc:aa2cb1ac4ea5b97c9283bc0fdb71da1d1 inherit pub_methods_classIpopt_1_1AlgorithmStrategyObject"><td class="mdescLeft">&#160;</td><td class="mdescRight">This method is called every time the algorithm starts again - it is used to reset any internal state.  <a href="classIpopt_1_1AlgorithmStrategyObject.html#aa2cb1ac4ea5b97c9283bc0fdb71da1d1">More...</a><br /></td></tr>
<tr class="separator:aa2cb1ac4ea5b97c9283bc0fdb71da1d1 inherit pub_methods_classIpopt_1_1AlgorithmStrategyObject"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac624e5a883f5c655cb0abbaa24eafcf9 inherit pub_methods_classIpopt_1_1AlgorithmStrategyObject"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIpopt_1_1AlgorithmStrategyObject.html#ac624e5a883f5c655cb0abbaa24eafcf9">ReducedInitialize</a> (const <a class="el" href="classIpopt_1_1Journalist.html">Journalist</a> &amp;jnlst, const <a class="el" href="classIpopt_1_1OptionsList.html">OptionsList</a> &amp;options, const std::string &amp;prefix)</td></tr>
<tr class="memdesc:ac624e5a883f5c655cb0abbaa24eafcf9 inherit pub_methods_classIpopt_1_1AlgorithmStrategyObject"><td class="mdescLeft">&#160;</td><td class="mdescRight">Reduced version of the Initialize method, which does not require special <a class="el" href="namespaceIpopt.html" title="This file contains a base class for all exceptions and a set of macros to help with exceptions.">Ipopt</a> information.  <a href="classIpopt_1_1AlgorithmStrategyObject.html#ac624e5a883f5c655cb0abbaa24eafcf9">More...</a><br /></td></tr>
<tr class="separator:ac624e5a883f5c655cb0abbaa24eafcf9 inherit pub_methods_classIpopt_1_1AlgorithmStrategyObject"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af2d972f86eec83a96682bd6741a1d265 inherit pub_methods_classIpopt_1_1AlgorithmStrategyObject"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIpopt_1_1AlgorithmStrategyObject.html#af2d972f86eec83a96682bd6741a1d265">AlgorithmStrategyObject</a> ()</td></tr>
<tr class="memdesc:af2d972f86eec83a96682bd6741a1d265 inherit pub_methods_classIpopt_1_1AlgorithmStrategyObject"><td class="mdescLeft">&#160;</td><td class="mdescRight">Default Constructor.  <a href="classIpopt_1_1AlgorithmStrategyObject.html#af2d972f86eec83a96682bd6741a1d265">More...</a><br /></td></tr>
<tr class="separator:af2d972f86eec83a96682bd6741a1d265 inherit pub_methods_classIpopt_1_1AlgorithmStrategyObject"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aea25a150f7488885653c082eca5dab45 inherit pub_methods_classIpopt_1_1AlgorithmStrategyObject"><td class="memItemLeft" align="right" valign="top">virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIpopt_1_1AlgorithmStrategyObject.html#aea25a150f7488885653c082eca5dab45">~AlgorithmStrategyObject</a> ()</td></tr>
<tr class="memdesc:aea25a150f7488885653c082eca5dab45 inherit pub_methods_classIpopt_1_1AlgorithmStrategyObject"><td class="mdescLeft">&#160;</td><td class="mdescRight">Destructor.  <a href="classIpopt_1_1AlgorithmStrategyObject.html#aea25a150f7488885653c082eca5dab45">More...</a><br /></td></tr>
<tr class="separator:aea25a150f7488885653c082eca5dab45 inherit pub_methods_classIpopt_1_1AlgorithmStrategyObject"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_methods_classIpopt_1_1ReferencedObject"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classIpopt_1_1ReferencedObject')"><img src="closed.png" alt="-"/>&#160;Public Member Functions inherited from <a class="el" href="classIpopt_1_1ReferencedObject.html">Ipopt::ReferencedObject</a></td></tr>
<tr class="memitem:a5c0f2208e3ead22bf7c5179381ed8203 inherit pub_methods_classIpopt_1_1ReferencedObject"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIpopt_1_1ReferencedObject.html#a5c0f2208e3ead22bf7c5179381ed8203">ReferencedObject</a> ()</td></tr>
<tr class="separator:a5c0f2208e3ead22bf7c5179381ed8203 inherit pub_methods_classIpopt_1_1ReferencedObject"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adbbf3aa5307da62ab8224ba599d4bd7a inherit pub_methods_classIpopt_1_1ReferencedObject"><td class="memItemLeft" align="right" valign="top">virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIpopt_1_1ReferencedObject.html#adbbf3aa5307da62ab8224ba599d4bd7a">~ReferencedObject</a> ()</td></tr>
<tr class="separator:adbbf3aa5307da62ab8224ba599d4bd7a inherit pub_methods_classIpopt_1_1ReferencedObject"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aac517534e10e36c946aeefc6fe337777 inherit pub_methods_classIpopt_1_1ReferencedObject"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespaceIpopt.html#a5a4a27f325033a0e5d85a4ebc4038b57">Index</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIpopt_1_1ReferencedObject.html#aac517534e10e36c946aeefc6fe337777">ReferenceCount</a> () const</td></tr>
<tr class="separator:aac517534e10e36c946aeefc6fe337777 inherit pub_methods_classIpopt_1_1ReferencedObject"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa69ecb0f026bd741e2fa84c31d4ec332 inherit pub_methods_classIpopt_1_1ReferencedObject"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIpopt_1_1ReferencedObject.html#aa69ecb0f026bd741e2fa84c31d4ec332">AddRef</a> (const <a class="el" href="classIpopt_1_1Referencer.html">Referencer</a> *referencer) const</td></tr>
<tr class="separator:aa69ecb0f026bd741e2fa84c31d4ec332 inherit pub_methods_classIpopt_1_1ReferencedObject"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae6c952e7d1a63080dc8f121c008944fc inherit pub_methods_classIpopt_1_1ReferencedObject"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIpopt_1_1ReferencedObject.html#ae6c952e7d1a63080dc8f121c008944fc">ReleaseRef</a> (const <a class="el" href="classIpopt_1_1Referencer.html">Referencer</a> *referencer) const</td></tr>
<tr class="separator:ae6c952e7d1a63080dc8f121c008944fc inherit pub_methods_classIpopt_1_1ReferencedObject"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-methods"></a>
Private Member Functions</h2></td></tr>
<tr><td colspan="2"><div class="groupHeader">Default Compiler Generated Methods</div></td></tr>
<tr><td colspan="2"><div class="groupText"><p>(Hidden to avoid implicit creation/calling).</p>
<p>These methods are not implemented and we do not want the compiler to implement them for us, so we declare them private and do not define them. This ensures that they will not be implicitly created/called. </p>
</div></td></tr>
<tr class="memitem:a1be123a0287499a6dac6a9aec4d45cbf"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIpopt_1_1LineSearch.html#a1be123a0287499a6dac6a9aec4d45cbf">LineSearch</a> (const <a class="el" href="classIpopt_1_1LineSearch.html">LineSearch</a> &amp;)</td></tr>
<tr class="memdesc:a1be123a0287499a6dac6a9aec4d45cbf"><td class="mdescLeft">&#160;</td><td class="mdescRight">Copy Constructor.  <a href="classIpopt_1_1LineSearch.html#a1be123a0287499a6dac6a9aec4d45cbf">More...</a><br /></td></tr>
<tr class="separator:a1be123a0287499a6dac6a9aec4d45cbf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac6a0e809c63dd8585b30116605bcea91"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIpopt_1_1LineSearch.html#ac6a0e809c63dd8585b30116605bcea91">operator=</a> (const <a class="el" href="classIpopt_1_1LineSearch.html">LineSearch</a> &amp;)</td></tr>
<tr class="separator:ac6a0e809c63dd8585b30116605bcea91"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="inherited"></a>
Additional Inherited Members</h2></td></tr>
<tr class="inherit_header pro_methods_classIpopt_1_1AlgorithmStrategyObject"><td colspan="2" onclick="javascript:toggleInherit('pro_methods_classIpopt_1_1AlgorithmStrategyObject')"><img src="closed.png" alt="-"/>&#160;Protected Member Functions inherited from <a class="el" href="classIpopt_1_1AlgorithmStrategyObject.html">Ipopt::AlgorithmStrategyObject</a></td></tr>
<tr class="memitem:a6e5ef59a257a61c928515ea78fd5c148 inherit pro_methods_classIpopt_1_1AlgorithmStrategyObject"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIpopt_1_1AlgorithmStrategyObject.html#a6e5ef59a257a61c928515ea78fd5c148">InitializeImpl</a> (const <a class="el" href="classIpopt_1_1OptionsList.html">OptionsList</a> &amp;options, const std::string &amp;prefix)=0</td></tr>
<tr class="memdesc:a6e5ef59a257a61c928515ea78fd5c148 inherit pro_methods_classIpopt_1_1AlgorithmStrategyObject"><td class="mdescLeft">&#160;</td><td class="mdescRight">Implementation of the initialization method that has to be overloaded by for each derived class.  <a href="classIpopt_1_1AlgorithmStrategyObject.html#a6e5ef59a257a61c928515ea78fd5c148">More...</a><br /></td></tr>
<tr class="separator:a6e5ef59a257a61c928515ea78fd5c148 inherit pro_methods_classIpopt_1_1AlgorithmStrategyObject"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af33506203825c1679fdb8e3b02df0cd7 inherit pro_methods_classIpopt_1_1AlgorithmStrategyObject"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classIpopt_1_1Journalist.html">Journalist</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIpopt_1_1AlgorithmStrategyObject.html#af33506203825c1679fdb8e3b02df0cd7">Jnlst</a> () const</td></tr>
<tr class="separator:af33506203825c1679fdb8e3b02df0cd7 inherit pro_methods_classIpopt_1_1AlgorithmStrategyObject"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2a151fb4b58f2186237b55d97af77ef7 inherit pro_methods_classIpopt_1_1AlgorithmStrategyObject"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classIpopt_1_1IpoptNLP.html">IpoptNLP</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIpopt_1_1AlgorithmStrategyObject.html#a2a151fb4b58f2186237b55d97af77ef7">IpNLP</a> () const</td></tr>
<tr class="separator:a2a151fb4b58f2186237b55d97af77ef7 inherit pro_methods_classIpopt_1_1AlgorithmStrategyObject"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8b39e20ef00543ac41de1e4bb8a75930 inherit pro_methods_classIpopt_1_1AlgorithmStrategyObject"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classIpopt_1_1IpoptData.html">IpoptData</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIpopt_1_1AlgorithmStrategyObject.html#a8b39e20ef00543ac41de1e4bb8a75930">IpData</a> () const</td></tr>
<tr class="separator:a8b39e20ef00543ac41de1e4bb8a75930 inherit pro_methods_classIpopt_1_1AlgorithmStrategyObject"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa597d0c5c9f01cb0f3970f49fea8a730 inherit pro_methods_classIpopt_1_1AlgorithmStrategyObject"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classIpopt_1_1IpoptCalculatedQuantities.html">IpoptCalculatedQuantities</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIpopt_1_1AlgorithmStrategyObject.html#aa597d0c5c9f01cb0f3970f49fea8a730">IpCq</a> () const</td></tr>
<tr class="separator:aa597d0c5c9f01cb0f3970f49fea8a730 inherit pro_methods_classIpopt_1_1AlgorithmStrategyObject"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5f6310084b90871ee4eec3d89bb407ee inherit pro_methods_classIpopt_1_1AlgorithmStrategyObject"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIpopt_1_1AlgorithmStrategyObject.html#a5f6310084b90871ee4eec3d89bb407ee">HaveIpData</a> () const</td></tr>
<tr class="separator:a5f6310084b90871ee4eec3d89bb407ee inherit pro_methods_classIpopt_1_1AlgorithmStrategyObject"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Base class for line search objects. </p>

<p class="definition">Definition at line <a class="el" href="IpLineSearch_8hpp_source.html#l00017">17</a> of file <a class="el" href="IpLineSearch_8hpp_source.html">IpLineSearch.hpp</a>.</p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="af2ec1bd039c55a71595069245cd3e1b0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af2ec1bd039c55a71595069245cd3e1b0">&#9670;&nbsp;</a></span>LineSearch() <span class="overload">[1/2]</span></h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">Ipopt::LineSearch::LineSearch </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Default Constructor. </p>

<p class="definition">Definition at line <a class="el" href="IpLineSearch_8hpp_source.html#l00023">23</a> of file <a class="el" href="IpLineSearch_8hpp_source.html">IpLineSearch.hpp</a>.</p>

</div>
</div>
<a id="af0662e2a2da3485f7378fe3c02457a38"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af0662e2a2da3485f7378fe3c02457a38">&#9670;&nbsp;</a></span>~LineSearch()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual Ipopt::LineSearch::~LineSearch </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Destructor. </p>

<p class="definition">Definition at line <a class="el" href="IpLineSearch_8hpp_source.html#l00027">27</a> of file <a class="el" href="IpLineSearch_8hpp_source.html">IpLineSearch.hpp</a>.</p>

</div>
</div>
<a id="a1be123a0287499a6dac6a9aec4d45cbf"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1be123a0287499a6dac6a9aec4d45cbf">&#9670;&nbsp;</a></span>LineSearch() <span class="overload">[2/2]</span></h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">Ipopt::LineSearch::LineSearch </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classIpopt_1_1LineSearch.html">LineSearch</a> &amp;&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Copy Constructor. </p>

</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="ad0913502718f88b85dc4af3c4e58eaf1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad0913502718f88b85dc4af3c4e58eaf1">&#9670;&nbsp;</a></span>FindAcceptableTrialPoint()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void Ipopt::LineSearch::FindAcceptableTrialPoint </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Perform the line search. </p>
<p>As search direction the delta in the data object is used. </p>

<p>Implemented in <a class="el" href="classIpopt_1_1BacktrackingLineSearch.html#a0ff9e255c5d3621ff68abbe97393f2eb">Ipopt::BacktrackingLineSearch</a>.</p>

</div>
</div>
<a id="ad33f5703834e99614d2eace2846ac5c0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad33f5703834e99614d2eace2846ac5c0">&#9670;&nbsp;</a></span>Reset()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void Ipopt::LineSearch::Reset </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Reset the line search. </p>
<p>This function should be called if all previous information should be discarded when the line search is performed the next time. For example, this method should be called after the barrier parameter is changed. </p>

<p>Implemented in <a class="el" href="classIpopt_1_1BacktrackingLineSearch.html#ac5f93da335cb0a2d7d2eb324664839a9">Ipopt::BacktrackingLineSearch</a>.</p>

</div>
</div>
<a id="abe044f75d7c5d0ad79a58ddc3b4aab23"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abe044f75d7c5d0ad79a58ddc3b4aab23">&#9670;&nbsp;</a></span>SetRigorousLineSearch()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void Ipopt::LineSearch::SetRigorousLineSearch </td>
          <td>(</td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>rigorous</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Set flag indicating whether a very rigorous line search should be performed. </p>
<p>If this flag is set to true, the line search algorithm might decide to abort the line search and not to accept a new iterate. If the line search decided not to accept a new iterate, the return value of <a class="el" href="classIpopt_1_1LineSearch.html#a129fe1f77e892e9baf6a1565280afa48" title="Check if the line search procedure didn&#39;t accept a new iterate during the last call of FindAcceptable...">CheckSkippedLineSearch()</a> is true at the next call. For example, in the non-monotone barrier parameter update procedure, the filter algorithm should not switch to the restoration phase in the free mode; instead, the algorithm should switch to the fixed mode. </p>

<p>Implemented in <a class="el" href="classIpopt_1_1BacktrackingLineSearch.html#a37b965f5bab43374dd0333edbaa7dc65">Ipopt::BacktrackingLineSearch</a>.</p>

</div>
</div>
<a id="a129fe1f77e892e9baf6a1565280afa48"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a129fe1f77e892e9baf6a1565280afa48">&#9670;&nbsp;</a></span>CheckSkippedLineSearch()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual bool Ipopt::LineSearch::CheckSkippedLineSearch </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Check if the line search procedure didn't accept a new iterate during the last call of <a class="el" href="classIpopt_1_1LineSearch.html#ad0913502718f88b85dc4af3c4e58eaf1" title="Perform the line search.">FindAcceptableTrialPoint()</a>. </p>

<p>Implemented in <a class="el" href="classIpopt_1_1BacktrackingLineSearch.html#ad3aa80c41e50b2e095f0a29d38aac8fa">Ipopt::BacktrackingLineSearch</a>.</p>

</div>
</div>
<a id="a6b2653f6e6a17c3d909b2868c772d752"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6b2653f6e6a17c3d909b2868c772d752">&#9670;&nbsp;</a></span>ActivateFallbackMechanism()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual bool Ipopt::LineSearch::ActivateFallbackMechanism </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>This method should be called if the optimization process requires the line search object to switch to some fallback mechanism (like the restoration phase), when the regular optimization procedure cannot be continued (for example, because the search direction could not be computed). </p>
<p>This will cause the line search object to immediately proceed with this mechanism when <a class="el" href="classIpopt_1_1LineSearch.html#ad0913502718f88b85dc4af3c4e58eaf1" title="Perform the line search.">FindAcceptableTrialPoint()</a> is call.</p>
<dl class="section return"><dt>Returns</dt><dd>false, if no fallback mechanism is available. </dd></dl>

<p>Implemented in <a class="el" href="classIpopt_1_1BacktrackingLineSearch.html#adf4d14f8c923f279b2f62163473e1ff9">Ipopt::BacktrackingLineSearch</a>.</p>

</div>
</div>
<a id="ac6a0e809c63dd8585b30116605bcea91"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac6a0e809c63dd8585b30116605bcea91">&#9670;&nbsp;</a></span>operator=()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void Ipopt::LineSearch::operator= </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classIpopt_1_1LineSearch.html">LineSearch</a> &amp;&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>src/Algorithm/<a class="el" href="IpLineSearch_8hpp_source.html">IpLineSearch.hpp</a></li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
</body>
</html>
